Release Notes
=============

           Broadcom NetXtreme II Gigabit Ethernet Diagnostic Tool
                           For DOS/Linux/UEFI

              Copyright (c) 2001-2014 Broadcom Corporation
                          All rights reserved.

Known issue(s)
==============
1. When writing a text file, make sure to configure the EOL translation 
   to CRLF; otherwise, unix-like text file will result. To configure, 
   use "fconfigure $fd -translation crlf".

History
=======
version 7.10.3 (May 23, 2014)
    1. Add support for SLES12 and RHEL7.0 distro (CQ73918) [lx_diag].

version 7.10.2 (February 26, 2014)
    1. Updated copyright year in the banner (CQ73121).

version 7.10.1 (February 21, 2014)
    1. Fixed an unresolved symbol when inserting Linux diag modules
       (CQ#73076) [lx_diag].

version 7.10.0 (February 14, 2014)
    1. Fixed 5708 MSI test false failure due to disabling interrupt
       marginally too soon. (CQ#69753) [lx_diag].
    2. Remove MAC Based License Key (MLK) Check for NetXtreme II 1Gb 
       Controllers. (CQ#71640)

version 7.8.1 (January 22, 2013)
    1. Added limited support for Fedora 18 (CQ#67396) [lx_diag].
    2. Updated copyright year on the banner.

version 7.8.0 (November 14, 2012)
    1. Support deletion of standalone CCM binary if MBA with built-in
       CCM is programmed (CQ#66068).

version 7.4.0 (August 17, 2012)
    1. Disable NVRAM test by default in SysOp mode (CQ#63818) [xdiag, 
       lx_diag, uefi_xdiag, lx_diag_ppc64].
    2. Fixed the false failure in bootcode state test of nictest in 
       SysOp mode (C2).

version 7.2.50 (April 05, 2012)
    1. Device is not recognized when it's inserted in slot2 of the 
       OEM system (CQ#61855) [uefi_xdiag]
    2. Added nictest test case C21 for boot code state test (CQ#60970)
       [xdiag, lx_diag, uefi_xdiag, lx_diag_ppc64].

version 7.2.1 (March 14, 2012)
    1. Added SLES11.2 support (CQ#61989) [lx_diag, lx_diag_ppc64].

version 7.2.0 (January 30, 2012)
    1. Added CCM image support (CQ#59633) 
       [xdiag, lx_diag, uefi_xdiag, lx_diag_ppc64].
    2. MBA upgrade fails on some old MBA/CLP image from v1.1.3 to v1.3.5
       due to these images don't have the "indicator" field set correctly.
       Work around it by checking the over all length of the image
       (CQ#60061) [xdiag, lx_diag, uefi_xdiag, lx_diag_ppc64].
    3. Fixed the chip orientation checking (introduced in v4.6.0) for 
       dual 5709 design [xdiag].
    4. Remove iSCSI boot config program image when upgrading iSCSI boot
       image to 7.0 or above (CQ#60116) [xdiag, lx_diag, uefi_xdiag, 
       lx_diag_ppc64].
    5. Added "-no_display" option on "device" command.
    6. Added "-skip_options" option on "nvm prg" command to preserve
       user-definable parameters (CQ#60000) [xdiag, lx_diag].
    7. Fixed "-cfgchk" option failing to validate the PCI subsystem
       device ID during board manufacturing (CQ#60812) [xdiag, lxdiag].
    8. Some UEFI systems may hit an assertion on "'tmp != NULL' failed:
       file sys\open.c". The EFI BIOS require EFI diag to be compiled 
       with the tool kit that has MAX_ENVRIONMENT_DATA size extended to 
       64k. Just need to recompile libc.lib and link with the diag
       (CQ#59786) [uefi_xdiag].

version 6.4.0 (April 8, 2011)
    1. Fixed FW Family Version display for specific OEMs (CQ#54467) 
       [xdiag, lx_diag, uefi_xdiag, lx_diag_ppc64].

version 6.2.0 (November 24, 2010)
    1. Fixed license checking when certain preboot feature is enabled
       in some OEM blade server designs (CQ#50415) [xdiag, lx_diag, 
       uefi_xdiag, lx_diag_ppc64].
    2. Added command history in lxdiag (CQ#50029) [lx_diag, lx_diag_ppc64].
    3. Fixed nvm crc command to work with large images (CQ#50287) [xdiag, 
       lx_diag, uefi_xdiag, lx_diag_ppc64].
    4. Fixed nvm prg to preserve iSCSI cfg when image directory layout is
       different from NVRAM (CQ#50906) [xdiag, lx_diag, uefi_xdiag, 
       lx_diag_ppc64].
    5. Fixed nvm image restore on PPC64 (CQ#49902) [lx_diag_ppc64].


version 6.0.5 (September 09, 2010)
    1. Fixed traffic test failure on customer platform (CQ#49690) 
       [lx_diag, lx_diag_ppc64].

version 6.0.4 (August 20, 2010)
    1. Fixed compilation errors on RH6.0 ss10 (CQ#49155) [lx_diag, 
       lx_diag_ppc64].

version 6.0.3 (August 16, 2010)
    1. Added RH6.0 support (CQ#49155) [lx_diag, lx_diag_ppc64].
    2. Provide OEM specific nvm cfg entry to control PHY link flap 
       (CQ#49363) [xdiag, lx_diag, uefi_xdiag, lx_diag_ppc64]

version 6.0.2 (July 26, 2010)
    1. Fixed parameter file parsing error for sysop (CQ#48278) [xdiag].
    2. Enhance xDiag to allow sharing the same batch file in regular 
       and UART redirection modes (CQ#48796) [xdiag].
    3. Added support to display Family Version of FW for specific 
       OEMs (CQ#46453) [xdiag, lx_diag, uefi_xdiag, lx_diag_ppc64]
    4. Fixed -cfgchk command error (CQ#48846) [xdiag, lx_diag, uefi_xdiag, 
       lx_diag_ppc64]

version 6.0.1 (June 29, 2010)
    1. Fixed nvm upgrade, delete commands in Linux x86_64 (CQ#47630, 47655) 
       [lx_diag].
    2. Fixed floating point Exception on suse10u3 (CQ#47635) [lx_diag].
    3. Fixes driver compilation error on SLES11SP1 (CQ#48068) [lx_diag].

version 6.0.0 (May 06, 2010)
    1. Fixed blast test failure (CQ#44860) and C13, C16. [xdiag, lx_diag, 
       lx_diag_ppc64, uefi_xdiag].
    2. Enhanced I/O port redirection for sysop (CQ#44592) [xdiag, uefi_xdiag].
    3. Added MBA boot retry count to NVM CFG (CQ#45304) [xdiag, lx_diag, 
       lx_diag_ppc64, uefi_xdiag].
    4. Fixed the inability to program subsequent quad-port NICs in sysop
       mode due to a glitch in passing the PCI domain number in a script 
       [xdiag, lx_diag, uefi_xdiag].
    5. Changed sysop device summary page (CQ#46301)[xdiag, ueif_xdiag].
    6. Fixed mac loopback test on UEFI Gen2 (CQ#46011) [uefi_xdiag].
    7. Display public silent revision of 5709 as C1 in engineering 
       diagnostics (CQ#46682) [lx_diag].
    8. Added support for UEFI 64-bit addressing (CQ#44959) [uefi_xdiag]. 
    9. Added support for Linux 64-bit application build. [lx_diag]
   10. Fixed D6 test (CQ#47158) [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].
   11. Support Linux 64-bit application build (CQ#47159) [lx_diag].
   12. Added -noL1 option and allowed nvm cfg 75 on 5709/5716 (CQ#47220)
       [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].

version 5.2.3 (November 23, 2009)
    1. Added domain to bus/dev/func combination on all platforms.(CQ#41049) 
       [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].
    2. Enabled programming of UVLK for specific OEMs (CQ#44541, CQ#44547) 
       [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].
    3. Changed MBA upgrade warning message (CQ#44549) [xdiag, lx_diag, 
       lx_diag_ppc64, uefi_xdiag].
    4. Fixed -m to take MAC inputs from remote COM port when xdiag is in 
       serial redirect mode (CQ#44592). [xdiag, uefi_xdiag].

version 5.2.2 (October 15, 2009)
    1. Added DOS and UEFI utility for 5709 NICs to upgrade iSCSI Universal 
       License Key (CQ#43655) [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].
    2. Changed ISB_CPRG upgrade policy to always override the section
       (CQ#43703) [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].
    3. Added -raw option to program complete NVM image without skipping
       any field (CQ#43877) [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].
    4. Added @filename.txt option to parse command line options from the 
       file (CQ#43887) [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].

version 5.2.1 (August 31, 2009)
    1. Added -skip_ec and -skip_sn command line options (CQ#42695) 
       [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].

version 5.2.0 (August 17, 2009)
    1. Fixed a potential problem of mis-identifying devices when running
       nictest across multiple devices (CQ#37760) [xdiag, lx_diag, 
       lx_diag_ppc64, uefi_xdiag].
    2. Preserve the original value of an internal state variable 
       (::sys(BATCH)) at the end of each of the nictest. Should have no
       functional impact [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].
    3. Update the device ID of the UEFI driver as the overall MBA image
       is programmed (CQ#42602) [xdiag, lx_diag, lx_diag_ppc64, 
       uefi_xdiag].
    4. Enhanced XDIAG to display detailed information of MBA image
       (CQ#42580) [xdiag, lx_diag, lx_diag_ppc64, uefi_xdiag].
    5. Added GEN2_TX_PREEMP to nvm cfg (CQ#42547) [xdiag, lx_diag, 
       lx_diag_ppc64, uefi_xdiag].
    6. Added support for FCoE boot image upgrade and -force_febcfg 
       to perform fcoe boot cfg block update. It works with -fnvm at 
       command line (CQ#42670) [xdiag, lx_diag, lx_diag_ppc64, 
       uefi_xdiag].
    7. Driver updates the link status for mgmt FW consumption in get 
       link command (CQ#41239) [xdiag, lx_diag, lx_diag_ppc64, 
       uefi_xdiag].
    8. Removed ofld support from lx_diag driver (CQ#34222) [lx_diag,
       lx_diag_ppc64].
    9. Changed c05 test to flip none sc bits only (CQ#33933) [xdiag, 
       lx_diag, lx_diag_ppc64, uefi_xdiag].

version 5.0.5 (June 29, 2009)
    1. Fixed C11 crash on Suse11-64 bit (CQ#41960) [lx_diag].
    2. Fixed "no symbol version" on Suse11-64 bit(CQ#41965) [lx_diag].

version 5.0.4 (June 10, 2009)
    1. Allow configuration of the backup MAC address field in "nvm cfg"
       menu (CQ#41293). Zero out this field if the original value is
       all F's to ensure proper programming in manuf environment [xdiag, 
       lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    2. Fixed system lock up problem after pressing Ctrl-break (CQ#41597)
       [xdiag].
    3. Fixed system lock up in sysop mode on 5708 (CQ#39761) 
       [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    4. Fixed combo MBA image upgrade (CQ#39998) [xdiag, lx_diag, 
       lx_xdiag_ppc64, uefi_xdiag].
    5. Fixed ipv6 flag being set wrongly in v.2 cfg blk during nvm 
       upgrade of iscsi driver if there is no pre-existing cfg blk in 
       nvram [xdiag,lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    6. When doing nvm upgrade -mba, if -p option is used, it mandatory
       checks for pfn_val. Removed optional -n option after -p [xdiag, 
       lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    7. Added nvm cfg option to force Expansion ROM advertisement [xdiag, 
       lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    8. Fixed C4 crash on Suse11-64 bit (CQ#41746) [lx_diag].
       
version 5.0.3 (May 21, 2009)
    1. When upgrading iSCSI configuration block from version 1
       to version 2, if iSCSI combo IPV4/V6 driver is installed,
       skip converting configuration block from IPV4 format to
       IPV6 format [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    2. When user hits CTRL-C to abort, xdiag exits with
       ERR_USER_ABORT(71) error code (CQ#40947) [xdiag, lx_diag, 
       lx_xdiag_ppc64, uefi_xdiag].
    3. Added 4-port single PCIe 5709 handling in sysop mode.
    4. Dump MAC addresses in comment section from "nvm cfg dump"
       [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    5. Only upgrade iSCSI configuration block 2 to dual-port devices
       [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    6. Preserve backup MAC address fields when programming NVRAM image
       (CQ#41293) [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag].


version 5.0.2 (April 24, 2009)
    1. Added logic to convert iSCSI configuration block
       between version 1, version 2, IPV4, and IPV6 format
       during upgrade [xdiag, lx_diag, lx_xdiag_ppc64, 
       uefi_xdiag].
    2. Added a command line option "fib_ipv6" to install ipv6
       iSCSI driver [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    3. Added a command line option "fib_ipv4n6" to install iSCSI 
       combo ipv4 and ipv6 driver [xdiag, lx_diag, lx_xdiag_ppc64,
       uefi_xdiag].
    4. Fixed a Tcl script error on converting hex number in 
       blinking utility command when the 5709 ports are swapped
       (CQ#39790) [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    5. Fixed external loopback test intermittent failure and 1G
       external loopback test sometimes runs with a wrong speed 
       of 100M (CQ#40444) [xdiag, lx_diag, lx_xdiag_ppc64, 
       uefi_xdiag].
    6. Added output only redirection to COM port for sysop [xdiag,
       lx_diag, lx_xdiag_ppc64, uefi_xdiag].
    7. Added a command line option "checkrc" to support exiting 
       xdiag with proper error code when a Tcl script specified at
       command line ends up with failure [xdiag, lx_diag, 
       lx_xdiag_ppc64, uefi_xdiag].


version 5.0.1 (April 02, 2009)
    1. Fixed memory leak problem in Context caching test (C12).
       [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag]
    2. Added "-fib_ipv6" option to support programming IPV6
       iSCSI driver and iSCSI configuration file (CQ#40144). 
       [xdiag, lx_diag, lx_xdiag_ppc64, uefi_xdiag]
    3. NCSI firmware with version below 1.0.7 has 2 portions,
       namely NCSI_CMN and NCSI_XLIB. When upgrading NCSI
       firmware from version below 1.0.7 to version 1.0.7 and
       above, there is only 1 image, NCSI (CQ#40077). [xdiag,
       lx_diag, lx_xdiag_ppc64, uefi_xdiag]
    4. Added segment on top of bus, device, function for PCI
       scan. [uefi_xdiag]


version 5.0.0 (March 16, 2009)
    1. Changed the copyright to 2009 (CQ#39340). [xdiag, lx_diag,
       lx_xdiag_ppc64, uefi_xdiag]
    2. Added support for new NCSI image format. [xdiag, lx_diag,
       lx_xdiag_ppc64, uefi_xdiag]
    3. Fixed "-fmac" option that fails to program MAC address for
       5716 devices (CQ#39551). [xdiag, lx_diag, lx_xdiag_ppc64,
       uefi_xdiag]
    4. Fixed an intermittent false failure on reset test (C7) reported
       by OEM manufacturing (CQ#39866). [xdiag, lx_diag, lx_xdiag_ppc64,
       uefi_xdiag]
    5. Fixed a false memory test failure (B23) on MCP egress FIFO when 
       the device is connected to an active BMC (CQ#39883). [xdiag, 
       lx_diag, lx_xdiag_ppc64, uefi_xdiag]
    
version 4.6.9 (January 23, 2009)
    1. Fixed stat test (D5) script to allow MCP to run so it can apply 
       TDMA workaround for 5709 (DOS only, CQ#39185).

version 4.6.8 (January 17, 2009)
    1. Fixed two intermittent external loopback failiures when connected
       to a host loopback partner (or slave port) (CQ#39165).

version 4.6.7 (December 19, 2008)
    1. Remove remote PHY and 2.5G enable/disable options for 5716S.
    2. Added support for multiple MBA image version display (CQ#38852).
    3. Prevent users from enabling WOL if VAUX is not set (CQ#38896). 
    4. Fixed unhandled interrupts while running HCSB (C15) test (DOS
       only, CQ#38845).
    5. Fixed loopback test failures when PCIE Gen2 is enabled 
       (CQ#38816).

version 4.6.6 (November 25, 2008)
    1. Fixed a potential failure in reading a license file. The data
       may have been freed back to memory pool too soon.
    2. Added an ability to dump NVRAM configuration values to a file
       for engineering use (CQ#37842).
    3. Added minor enhancements to "nvm cfg" for engineering use.
    4. Display public silent revision of 5709 as C1 in engineering 
       diagnostics (CQ#38420).
    5. Added 5716S support.
    6. Added support for a new multi-license file format (CQ#38605).

version 4.6.5 (November 11, 2008) (For release T4.6)
    1. Fixed external loopback test running at incorrect speed (CQ#38350).
    
version 4.6.4 (October 29, 2008)
    1. Prevent users from enabling WOL on serdes NIC (CQ#37836).

version 4.6.3 (October 16, 2008)
    1. Corrected the field length value for "RV" in VPD (CQ#37794).
    2. Show progress status when programming NVRAM (CQ#37767).
    3. Disabled WOL enable on 5706s, 5708s, 5709s (CQ#37836).
    4. Fixed Xdiag register test failure (CQ#37902).

version 4.6.1 (September 30, 2008)
    1. Fixed "-mac" option, bug introduced in v4.6.0.
    2. Disallow "license" command and related command line options for
       5716 (CQ#37445).

version 4.6.0 (August 20, 2008)
    1. Fixed command line chkkey return value (CQ#35241).
    2. Modified command line option to take multiple NVM file names
       (CQ#35173).
    3. Fixed A1 test crash on customer system. Slave port is only  
       active in d3 test (CQ#35421).
    4. Changed -cfgchk to handle two ports (CQ#35606).
    5. Addressed C5 test failure on certain setup (CQ#35067).
    6. Resolved reboot issue when programming 5709 (CQ#34786).
    7. Support cross chip loopback (nictest D3) test for SerDes via
       "-slave 0" option. This is used for quad port 5709S board 
       designs. Worked around the mgmt FW enabling packet forwarding 
       when "device x hlb_on" is invoked on the second function (5709 
       only).
    8. Added chip orientation checking for dual 5709 design (CQ#35699).
    9. Changed SYSOP MAC input interface -m (CQ#35725).
   10. Fixed NVRAM programming failure when cross loopback check is
       activated (CQ#35845).
   11. Added an option in nvm cfg to include MBA protocol = none
       (CQ#36334).
   12. Fixed a crashing problem when user enters a long command that
       exceeds 80 characters (CQ#36197).
   13. Added command line option to change smbus address (CQ#35112).
   14. Fixed the 5708 IPMI firmware v1.05 downgrade prevention 
       (CQ#36750).
   15. For 5716, prevent access to iSCSI MAC address in "nvm cfg" and
       skip programming in manufacturing mode.
   16. Fixed the "-fmac" option for programming multiple devices 
       (ports).
       
version 4.4.4 (May 1, 2008)
    1. Added hlb check in diag exit routine to prevent xdiag hang.
    2. Remove the "config not saved" string when doing a "nvm cfg =" 
       command (CQ#33065).
    3. Included umpfw.h in xdiag (CQ#33490).
    4. Fixed -virtnvm command to work with NVM files that contain 
       special padding (CQ#34376).
    5. Addressed packet CRC error in 5709 C0 blast test (CQ#34132).
    6. Enable HW Write Protect (WP#) Function on Atmel D Flash 
       (AT45DB11xxD)(CQ#34688).
    7. Fixed incorrect display of WOL on port 2 when it's disable 
       after running nictest on 5709 C0 (CQ#35016).
    8. Changed smbus address in "nvm cfg" to be port specific 
       (CQ#35064).

    
version 4.4.3 (April 07, 2008)
    1. Fixed "pci init" problem with not programming the PCI IDs.
    2. Changed nvm cfg Remote Phy item display (CQ#34487).
    3. Fixed 5709 C0 A1 test (CQ#34530).
    4. Fixed iscsi_boot_cfg2 upgrade failure (CQ#34598).
    5. Fixed 5709 C14 test failure that was caused by FW, xdiag RSS
       implementation mismatch.
    6. Added a workaround to eliminate reboot problems on some blade
       server designs upon exiting.
    7. Added [P] and [S] prefix to 5709 nvm cfg items. The prefix 
       indicates shared and port specific parameters.
    8. Made UMP and SMBUS related nvm cfg items all shared parameters.


version 4.4.2 (March 20, 2008)
    1. Added forced PFN (overriding the bus, device, and function 
       numbers) and device check bypass when programming MBA. This is 
       strictly for debug use.
    2. Added another "nvm cfg" menu item option for preventing PCIE L1 
       entry for 5708.
    3. Fixed a system reboot problem upon exit with IPMI enabled on one 
       OEM design (CQ#32618).
    4. Added 5716 support.
    5. Added -asiccnt and -autom for sysop to deal with 4 5709.
    6. Modified nvm up -ncsi to handle 57710 ncsi image.
    7. Resolved host loopback failure on 5709 (CQ#33275,CQ#33276).


version 4.4.1 (February 22, 2008)
    1. Corrected the help screen in "license" command.
    2. Eliminated the inadvertent write to the flash interface, causing
       a failure in loading IPMI FW on one 5708 design, upon xdiag exit
       (CQ#32618).
    3. Added update to NCSI package IDs and ID determination method to
       both instances of configuration blocks inside NVRAM since these
       two parameters are on per-chip basis, rather than on per-port.
       This is only applicable for 5709.
    4. Fixed 5709 B1 C11 failure (CQ#32796).
    5. Addressed 5709 B1 D7 failure (CQ#33756).
    6. Fixed 5709 B1 C5 test hang (CQ#33766).
    7. Fixed xdiag C5 issue on 5709 NIC in a vendor's system which  
       caused reboot (CQ#33796).
    8. Set D7 to disabled by default.


version 4.4.0 (February 01, 2008)
    1. Fixed an intermittent PHY loopback test failure due to an 
       incorrect determination of medium type (copper vs. serdes)
       on the OTP'd 5709C parts.
    2. Make "license chkkey" command return consistent results whether 
       a valid license is present or not (CQ#33484).
    3. Fixed A5 failure on 5709 (CQ#33463).
    4. Implemented ump external loopback. Added ump mac loopback (D7)
       and ump external loopback (D8) to nictest. D8 is disabled by
       default (CQ#33491). 
    5. Added "license chkkey" and "license display" support for the 
       current key (in shared memory).
    6. Added "license dump" to extract individual license fields.
    7. Select RMII mode for NCSI on the 5709 (CQ33669).

version 4.1.0 (January 14, 2008)
    1. Fixed the mis-reported packet drops by FW. The unwanted parameter
       was restored too soon (CQ#33409).

version 4.0.1 (December 11, 2007)
    1. Added power budget number configuration (nvm cfg) interface for 
       5709.
    2. Replaced all chip codename references with their corresponding
       chip numbers.
    3. Updated the resource config and enum value on the secondary 
       port for 5709 when programming licenses (CQ#32713).
    4. Added NVRAM configuration choice of 2.5G link for MBA (CQ#32721).
    5. No half duplex allowed for serdes in MBA link speed choice.

version 4.0.0 (November 15, 2007)
    1. Fixed ODI driver failed to load after running xdiag and hitting
       Ctrl-C (CQ#32113). Captured Ctrl-C and added BreakHandler.  The 
       handler will reset all NX2 chips.
    2. Restored management f/w data region in shared memory if needed
       by BreakHandler when Ctrl-C is hit.
    3. In A5 test(msitest), mcp is halted after driver loads before
       test starts.
    4. Balanced the traffic load of the 2 ports of 5709 set to loopback
       mode running at 2.5G with external source pumping packets to
       both ports simultaneously.
       
version 3.7.6 (October 24, 2007)
    1. Fixed a device disppearing issue after running an error in 
       upgrading firmware using command line interface (CQ#32003).

version 3.7.5 (October 18, 2007)
    1. Fixed IPMI failed to ping after running xdiag on secondary
       port of 5709 (CQ#31907).
    2. Fixed 5708 msi test (A5) intermittent failure on a vendor's
       system.

version 3.7.4 (October 12, 2007)
    1. For 5709, allow nvm cfg options 29, 47, 64, and 65 to have 
       different values between the two ports.

version 3.7.3 (October 09, 2007)
    1. For 5709, if any of nvm cfg options 29, 47, 64, and 65 has 
       different values between the two ports, user will be prompted
       if it is run interactively.  If it is run in batch mode, a 
       warning message will be displayed and TCL_ERROR will be
       returned.

version 3.7.2 (October 02, 2007)
    1. Added nvm rescfg command (CQ#30524).
    2. Fixed ISCSI boot config check (CQ#31496).
    3. Checked IPMI f/w before storing onto NVRAM to prevent loading
       5709 IPMI f/w onto 5708 device (CQ#31600)

version 3.7.1 (September 26, 2007)
    1. Fixed IPMI f/w installation failure on 5708 Serdes.
    2. Fixed license command failure on port 1 of 5709 (CQ#31482).
    3. If there is no proper f/w header, nvm upgrade command for
       5709 will fail.
    4. Added support for 5709 remote phy.
    5. In nvm cfg, properly set default values of Broadcom vendor 
       device ID and subvendor device ID according to phy/serdes
       of 5709.
    6. Fixed 5709 LED mode not set properly when doing layer 2 tests.

version 3.7.0 (September 18, 2007)
    1. Added test items #13 - #21 in group C test. The new test items
       are disabled by default.
    2. Disabled interrupt message from pcie command register before 
       starting msix test.
    3. Added SMBus timing configuration in nvm cfg.
    4. For license command, MAC address is retrieved from NVRAM
       (CQ#31366).
    5. Checked UMP f/w before storing onto NVRAM to prevent loading
       5709 UMP f/w onto 5708 device (CQ#31269).
    6. Checked proper IPMI f/w before storing onto NVRAM to prevent 
       loading UMP f/w as IPMI f/w (CQ#31293).
    7. Checked proper iSCSI f/w before storing onto NVRAM to prevent 
       loading MBA f/w as iSCSI f/w (CQ#31285).
    8. Stopped management f/w on both ports of 5709 when reset is 
       called with nomfw option(CQ#31374).

version 3.5.7 (September 7, 2007)
    1. Set Serdes into proper mode after running nictest (CQ#31287).

version 3.5.6 (August 30, 2007)
    1. Removed license display options #4 to #9 (CQ#30979).
    2. Added two NCSI Package ID conguration options to "nvm cfg".
    3. Fixed VPD corruption problem (CQ#31028).
    4. Set proper enum and resc flags after removing license
       key (CQ#31022).
    5. Fixed sysop powering on/off device problem.
    6. Disabled interrupt message from pcie command register before 
       starting msi test.

version 3.5.5 (July  26, 2007)
    1. Fixed context test (C12) intermittent failure for 5709
       (CQ#30344).
    2. Added -force_ibcfg to perform iscsi boot cfg block update. It 
       works with -fnvm (CQ#30356).
    3. Added nvm rescfg command to display and modify iscsi resource 
       in feature block (CQ#30524).

version 3.5.4 (July 3, 2007)
    1. Set MTU to support jumbo frame when -h is specified in
       blast command.
    2. Fixed logging information loss when system hangs during test
       (CQ#29635).
    3. Fixed 5709 C4 test failure (CQ#30192).
    4. Added "nvm cfg" item of choosing which mgmt FW to load on 5709.
    5. Fixed some registry variable entries to prevent from exceeding
       array limit.

version 3.5.3 (June 14, 2007)
    1. Skipped all UMP related registers in MCP when doing C5 test
       (CQ#29839).
    2. Fixed 5709 Serdes loopback failure.
    3. Fixed 5708 MAC/PHY loopback failure in a remote phy setup
       when link is present (CQ#29824).
    4. Skipped SPIO test in FIO Events Test (C11) when Vaux is not
       present for 5709 (CQ#29906).

version 3.5.2 (June 01, 2007)
    1. Forced Rx MAC to keep VLAN tag for slave device if it has
       been configured before running blast command.
    2. Write mfw override value at proper shared memory location for 
       5708 and 5709 if nomfw is passed in reset06.
    3. Fixed 5709 revision A DMA write causing data corruption when
       running C8 test (DMA Engine Test) (CQ#29672).
    4. Added the ability to program (multiple key format) license files 
       generated for 5709.
    5. License command will use port 0 MAC address of 5709 for either
       port. Allow license command on 5709 port 1, using port 0 MAC
       address.
    6. Allow mba firmware with 5706, 5708 and 5709 serdes device ID for 
       nvm upgrade command.
    7. For 5709, BOND_ID takes precedence when checking for each port's
       medium type.

version 3.5.1 (May 21, 2007)
    1. Fixed regtest rdf error for 5709 A1.
    2. Built with the correct version of rv2p firmware for 5709.
    3. For nvm prg command, if image has 8 extra signature bytes,
       discard the 8 bytes before programming to flash.
    4. Allows license command only on port 0 of 5709.
    5. Added slave option for tb command.

version 3.5.0 (May 3, 2007)
    1. Added nvm cfg items for enabling PCIE Gen2 and function hide on
       5709.
    2. Added mii command line options to support remote phy mdio.
    3. Added remote phy support in all traffic tests.
    4. Reduced test time for 5709 CAM Access Test (C3).

version 3.4.5 (May 3, 2007)
    1. Removed option 60 in nvm cfg (CQ#29341).
    2. Allowed VPD vendor specific data to be cleared in nvm cfg option
       58.
    3. Check for valid nvm upgrade options.

version 3.4.4 (April 17, 2007)
    1. Support universal license key for another OEM.
    2. Fixed a firmware upgrade problem that complains about not having
       enough NVRAM storage when the firmware image is built using a 
       new set of tool chain.
    3. Added remote PHY enable registry support on 5708S.
    4. Fixed 5709 serdes external loopback setting to wrong speed problem.
    5. Moved forward with the new IPMI version string format (CQ#28237,
       related to CQ#26549 & CQ#24665).

version 3.4.3 (March 28, 2007)
    1. For nvm dump command with 5709, if -a is specified or none of
       [-a | -s] is specified, the image file will be padded with 8 bytes
       of unused signature at end of each block. (CQ# 28381)
    2. For nvm prg command with 5709, if the flash is Atmel, it will
       check if there are 8 bytes of unused signature padding at end of
       each block.  If the padding bytes exist, they will be stripped
       prior to writing to flash. (CQ#28381)
    3. Fixed command line error when -fnvm is used with -mac (CQ#28831).
    4. Added -force_smbus option. (CQ#28420)

version 3.4.2 (February 08, 2007)
    1. Update exp ROM size for both ports on 5709 when program MBA to 
       NVRAM (CQ#28138).
    2. Changed the external loop back test to run on all media and speed 
       but function1 1G copper.
    3. Added port swap configuration interface in "nvm cfg".
    4. Fixed intermittent Register test failure (CQ#28236).
    5. Fixed the reset test test failure (C07 in nictest) (CQ#28290). 
       The logic check on the CPU status is fixed to make the overall
       checking more robust. Prior results from this test are still valid.
    6. Appended 8 bytes per page to image file when using nvm dump -a 
       option for 5709 (CQ#28380).
    7. In C11 test, Tcl informs test firmware which function it is running
       on (CQ#28239).
    8. Fixed D3 external loopback problem (CQ#28227).
    9. Fixed environment dependent issues between ASIC, FPGA, and IKOS when
       running tests on different environment.
   10. Fixed l2test case (51) to use proper spad offset between Tcl and 
       tpat firmware.  Also fixed l2 test case (48).  Skipped RPC path for
       5709 A0.

version 3.4.1 (January 24, 2007)
    1. Fixed -fnvm to allow it to work when -c specifies two 5709 ports/devices.
    2. Fixed MAC address byte order issue in program_nvm().
    3. Allowed pciinit to work on both ports of 5709.
    4. Fixed memory corruption problem (CQ#28232).
    5. Fixed test speed problem of external loopback.

version 3.4.0 (January 18, 2007)
    1. Added serdes support for 5709.
    2. Changed default setting of XDIAG_MED_MASK variable to 00000.
    3. Added code to restore shared memory for individual port of 5709
       under test to allow ipmi or ump to resume after test.
    4. Fixed external loopback test to be controlled by XDIAG_MED_MASK
       for 5709.
    5. Programming four MAC addresses for 5709 in SysOp environment (CQ#28150).

version 1.7.5 (March 15, 2007)
    1. Added -force_smbus option (CQ#28420).

version 1.7.4 (January 30, 2007)
    1. Fixed MAC address byte swap problem when using -fnvm option
       (CQ#28234).

version 1.7.3 (January 16, 2007)
    1. Added -virtnvm for nvm image file read/view only operation in 
       engineering mode.
    2. Added -viewnvmfile for nvm image file read/view only operation in 
       command line mode (CQ#27636). 
    3. Added -otherfn to nvm cfg command. 
    4. Set proper 5709 default device ID and Sybsystem device ID for nvm cfg
       command to set to default values.
    5. Skipped one register in register test for 5709.
    6. Extended the memory test range for ThbufSize, TpbufSize, and RmbufSize
       for 5709.
    7. Set loopback/external loopback test to use default PHY medium.

version 1.7.2 (December 22, 2006)
    1. Fixed toe(CTX_HADDR) format to avoid test failure with 5709 device.
    2. Enabled only DMA read test in DMA engine test (C8) for 5709.
    3. Fixed TPAT Cracker Test (C4) failure for 5708 device.

version 1.7.1 (December 21, 2006)
    1. Clear the screen and not leaving existing characters behind when
       xdiag starts in a serial over LAN environment (CQ#27651).
    2. Removed the TCL debug information when D3 test failed (CQ#27363).
    3. Added -noidmatch to skip any ID matching when programming nvm
       image (CQ#27581).
    4. Added VPD0 configuration support in nvm cfg (CQ#27629).
    5. For 5709 "S" part with NIC design, allow D2 and D3 tests to test
       each port with all 4 media. The number of media to be tested is
       configurable.
    6. Supported 5709 dual port nvm data structure.
    7. Added medium type option in mii command for 5709.
    8. Re-enable indirect access after resetting 5709 so that remaining
       reset routine does not timeout.

version 1.6.2 (November 10, 2006)
    1. Fixed the "nvm fill" that advertently skips the offset range 
       0x100-0x2ff.
    2. Added slave device support for reg, mii, qstat, and driver statslave 
       command.
    3. Fixed a memory corruption problem at restoring ipmi communication
       when no diagnostic test has been run.
    4. Displayed iSCSI configuration data block version number.
    5. Fixed Tx Dropped count in qstat command to report the Tx dropped
       packets per device.
    6. Put slave device in promiscuous mode and suppressed flood flag in 
       slave rxp.
    7. Added MSI-X test for 5709.
   
version 1.6.1 (October 17, 2006)
    1. Fixed 5708 fiber failing D4 test on an OEM platform (CQ#26946).
    2. Fixed ipmi communication problem after running diagnostic
       tests (CQ#26717).
    3. Added -idmatch to program nvram image onto all devices that
       match IDs (CQ#26745).
    4. Displays proper ID mismatch warning for -idmatch (CQ#27126).
    5. Displays iSCSI configuration program version (CQ#26876).
    6. Updated manual (CQ#27139)
    7. Fixed context cache table initialization status checking for
       5709.

version 1.6.0 (September 20, 2006)
    1. Prints explanation for option 25 in nvm cfg (CQ#25915).
    2. Removed option 30 in nvm cfg (CQ#26032).
    3. Sets system environment variable COF if -cof option is specified
       when running xdiag.  Engineering mode will check variable COF
       (CQ#25949).
    4. Added -idmatch option to check VID, DID, SVID, SSID for -fnvm.  
       Image is programmed into NVM only if the 4 IDs from image match
       with device's IDs (CQ#26745).
    5. Added option 27 to txcfg to specify data payload in each BD.
    6. Integrated 5709 code for FPGA test.

version 1.5.7 (October 27, 2006)
    1. Fixed 5708 fiber failing D4 test on an OEM platform (CQ#26946).

version 1.5.2 (August 31, 2006)
    1. Prints N/A for option 57 in nvm cfg for 5708 B2 (CQ#26597).
    2. Added command line option -fibc to program iSCSI configuration block
       and -fibp to program iSCSI configuration software (CQ#26573).

version 1.5.1 (August 25, 2006)
    1. Undo the change in item #4 in version 1.5.0 as this breaks the
       backward compatibility (CQ#26549).

version 1.5.0 (August 13, 2006)
    1. Fixed "nvm fill" when starting offset is 0 and the length 
       exceeds 260 (0x104) bytes (CQ#25838).
    2. Fixed an firmware upgrade problem where it is partially done due 
       to flash size limitation. The fix prevents any partial upgrade 
       (CQ#25872, 25995, 26002).
    3. Added command line support to configure MBA parameters such as
       the MBA link speed (CQ#25924).
    4. Fixed the IPMI version display (CQ#24665) to match the file name.
    5. Fixed an intermittent crashing/failure when running external
       loopback test using a slave device (CQ#26111).
    6. Added description of replacing "-pxe" with "-mba" in help/usage
       display (CQ#24038).
    7. Added automatic chip revision check in manufacturing environment
       (CQ#26297).
    8. Preserve the SMBus address when programming flash with "nvm prg"
       command (CQ#26275).
    9. Fixed the inability to program licenses in the manufacturing
       environement (CQ#26296).

version 1.4.5 (July 10, 2006)
    1. Fixed the incorrect parameter values in "nvm cfg" (CQ#24643).
    2. Allow debug output into log file on a debug build (CQ#21508).

version 1.4.4 (June 26, 2006)
    1. Fixed the incorrect ST flash size detection. It caused the C06
       test to fail and "nvm dir" to display bogus info (CQ#25381).
    2. Defined $::toe(UMP_VER) and $::toe(IPMI_VER) (CQ#25346).
    3. Check device ID before programming the NVRAM using "nvm prg"
       command (CQ#25437).
    4. Fixed an issue with advertently unloading the driver when
       selecting the same current device. The issue is brought up by
       the DVT team.
    5. Fixed a problem of failing to upgrade OEM iSCSI boot stub
       (CQ#25476).

version 1.4.3 (June 14, 2006)
    1. Fixed an intermittent external loopback (D03) test failure with 
       a slave device serving as a loopback terminator only on the 
       first iteration (CQ#25073). The fix gives the link some time to 
       settle before sending test traffic. This is the same fix made in 
       a branched version 1.3.6.
    2. Added back the recognition of iSCSI boot image in performing
       "nvm upgrade" (CQ#24972).
    3. Started using 5709 register definition, which is a superset of 
       the 5706/5708 definition.
    4. Added support for 5709 firmware for emulation.
    5. Added MSE value display on "blast command", needed for DVT 
       testing.
    6. Enhanced the LED blinking routine to accommodate some NIC 
       designs.
    7. Fixed "nvm fill" problem that skips filling the MAC addresses
       and license key fields. There could be a side effect in "nvm
       prg -force_mac" command in that the flash size info will be 
       wiped out by the counterpart in the image file.
    8. Fixed a possible infinite recursion on yield processing in blast
       command.
    9. Added autoneg with fallback options for the serdes in the "nvm 
       cfg" menu.
   10. Fixed the netlink test (A07) failure when invoked alone from the
       DOS prompt (CQ#25295).

version 1.4.2 (May 18, 2006)
    1. Incorporated the fix in the branched version 1.3.5 to fix RBUF 
       memory test problem. A chanage in v1.3.4 failed to override the 
       loading of management firmware. As a result, EMAC block became 
       active and delivered received traffic to the RBUF, causing the 
       memory test failure (CQ#24527). The same fix also addresses an
       issue with C06 test failure on some systems (CQ#24641).
    2. Return 16-byte aligned memory in the "hmem alloc" command.
    3. Updated driver registry to support more parameters.
    4. Fixed ASPM command running on 5708 devices.
    5. Fixed the warning message of env(PATH) being absent when $path 
       is not defined in DOS, second attempt (CQ#24035).
    6. Eliminated the redundant message about "resetting the chip"
       after upgrading boot code (CQ#24745).
    7. Added enhancement to prevent invalid images from being 
       programmed into the device (e.g. prevent an MBA image programmed 
       as boot code).
    8. Completely zero out the bootstrap in NVRAM with the correct CRC
       when phase one boot code is deleted from the NVRAM (CQ#24315, 
       CQ#24725).
    9. Fixed the inability to program multiple boards in the SysOp 
       environment.
   10. Re-initialize environment variables even when selecting the same
       device. The refresh is needed for the SysOp to program multiple
       NICs in a single system boot.

version 1.4.1 (April 27, 2006)
    1. Fixed the display in the "nvm cfg" menu to correctly show the 
       options.
    2. Fixed the inability to execute register test (A01) for 5708 B2.

version 1.4.0 (April 24, 2006)
    1. Added the ECO configuration parameter for 5708 B2 into the
       "nvm cfg" menu.
    2. Eliminated the undesired user prompt when invalid parameters are
       entered to the "nvm cfg" command (CQ#25135).

version 1.3.4 (April 20, 2006)
    1. Fixed a lockup after downgrading boot code (from v1.8.0 to 
       v1.7.7) followed by a reset command (CQ#24392).
    2. Minor documentation update in setup.txt (CQ#24348).
    3. Fixed the failure to update VPD information when issuing 
       "default" in the nvm cfg menu (CQ#24450).

version 1.3.2 (April 13, 2006)
    1. Fixed an intermittent FIO register test (C05) failure due to a 
       timing problem (CQ#24235,24298).

version 1.3.1 (April 06, 2006)
    1. Eliminated the warning message of env(PATH) being absent when
       $path is not defined in DOS (CQ#24035).
    2. Fixed the problem with Product Name disappearing after upgrading
       MBA image (CQ#24135).
    3. Fixed a problem with the screen display in "nvm cfg" skipping 
       some of the items. Also, add pause to show user when consistency
       check fails in configuring parameters #14, #36, & #48.
    4. Fixed -cfgchk on mis-checking the device ID as subsystem ID 
       described in the cfgchk.txt (CQ#24222).
    5. Fixed the boot code failure to load IPMI firmware on some LOMs.
       It was due to xdiag script resetting the flash block while the
       boot code was fetching IPMI firmware (CQ#24248, 24255, 24254).
    6. Adapt to the next new L2 context organization in 5709.
    7. Fixed the MAC address display update after the chip reset.
    8. Keep the EPM power management (PM) scaling factor value to zero 
       in the NVRAM when the actual PM numbers are zero.

version 1.3.0 (March 22, 2006)
    1. Fixed the crashing when typing "xdiag /?" due to the help message
       exceeds the buffer size (CQ#23694).
    2. Fixed the inability to enforce the "-cof" option when license
       check fails (CQ#23695).
    3. Fixed boot code version update after executing the upgrade command
       (CQ#23286). By design, the user still has to reset the device to 
       see the update.
    4. Fixed a device display information problem (not show boot code 
       version and other config info properly) when shared memory 
       location is changed.
    5. Added license information checking against configuration file,
       e.g. chkcfg.txt.
    6. Added consistency check on "nvm cfg" when configure combinations of
       option 14 (NIC vs LOM), option 36 (Vaux current overdraw), and 
       option 48 (Gigabit link on Vaux).
    7. For ASPM command, if root complex or end point does not support
       the power setting, it will display a warning message.
    8. Allow ioport command without the presence of any NetXtreme II
       devices.
    9. When the last NetXtreme II device interrupt handler for a certain 
       IRQ# detaches, it restores the original PIC mask bit value for 
       that IRQ#.
   10. Placed the DOS reentrant guard flag only on displaying nictest
       suite activity (blinking of the dots) to fix some DOS reentrant
       problem.
   11. Support 5709 on emulation.
   12. Fixed CPU firmware loading routine crashing due to an addition 
       segment (SData) introduced in CP firmware.
   13. Adapt to different shared memory location designated by the boot
       code to properly display some of the device information.
   14. Added power management and power budgeting parameter configuration
       support in "nvm cfg" for the EPB of the 5708 device (CQ#23681).
   15. Added forced L1 workaround enable/disable parameter support in
       "nvm cfg".

version 1.2.6 (February 17, 2006)
    1. Added "-nvmchk" option to check for NVRAM image integrity.
       Introduced a new error level code to reflect the failure
       when applicable.

version 1.2.5 (February 10, 2006)
    1. Fixed a problem where programming WOL using "-wol" command line 
       switch does not work with devices other than the first one
       (CQ#23227).

version 1.2.4 (February 08, 2006)
    1. Fixed a loopback test (D1,D2,D4) lockup problem. The hang was due 
       to DOS re-entrancy. It is now prevented with a more proper method 
       by synchronizing between the yield handler and nictest function
       (CQ#23127).

version 1.2.3 (February 01, 2006)
    1. Corrected the version number display on the banner.

version 1.2.2 (January 31, 2006)
    1. Disable unwanted output for the manufacturing tests (-sysop) that
       was advertently introduced.
    2. Treat the old method of computing RV field checksum from the VPD
       as acceptable to maintain backward compatibility.
    3. The VPD block of the NVRAM is not updated by "nvm cfg" unless any
       of the VPD fields is changed.

version 1.2.1 (January 27, 2006)
    1. Fixed a version string display and comparison problem for iSCSI
       boot images when at least one of the few bytes preceeding the 
       string is a NULL character. This misguided the algorithm to think 
       that the string ends there (CQ#22896).
    2. Zero out resource config parameters when upgrading license key for
       a particular OEM.
    3. Include programming of the license blocks when doing raw NVRAM
       programming (nvm prg) for a particular OEM (CQ#22917).
    4. Fixed a problem of returning zero as errorlevel when license
       check fails. The license checking command was inadvertently 
       returning success even when the check has a mismatch in results 
       (CQ#22918).
    5. Fixed a NVM test (C06) failure while BMC is communicating with UMP
       firmware. The fix is to skip loading UMP firmware on reset during
       the test (CQ#23036).

version 1.2.0 (January 20, 2006)
    1. Skipped version check if image did not exist in NVRAM. (CQ#22414)
    2. Added a universal license key support for an OEM.
    3. Dynamically update the NVRAM size into the NVRAM when programming
       an NVRAM image onto a new device (e.g. using "nvm prg").
    4. Added boot code image type check, preventing incorrect boot code
       from being programmed when the device and medium types do not 
       match (CQ#22612).
    5. Skip programming of the license keys in "nvm prg".
    6. Allow logging of device information when "-log" command line 
       option is provided (CQ#22349).
    7. Fixed a problem of repeating firmware/MBA upgrades and
       configuration changes when multiple test iterations are performed
       (e.g. "-I 2").
    8. Added "-slave" command line option to turn a device to a "slave"
       mode that can only echo packets and cannot be a device under 
       test (for DOS in addition to Linux).
    9. Support a combined iSCSI boot image that includes configuration
       information and configuration software.
   10. Support user block type NVRAM image for OEMs to store their own
       information.
   11. Fixed an issue with extra characters being logged while upgrading
       firmware.
   12. Fixed a VPD checksum in "RV" field. Running this version may 
       report "Invalid checksum in RV field" on existing devices, but 
       saving the any NVRAM configuration parameter will automatically 
       correct the problem.

version 1.1.9 (December 07, 2005)
    1. Fixed an ST Micro flash size determination algorithm that failed
       to return a correct size.
    2. Removed the unused "nvm cfg" entry about WOL advertising 1G.
    3. Fixed "-cof" option, allowing the test to continue.
    4. Implemented the open/short test (OST) for copper PHY 
       (CQ#TO00000911).
    5. Statistic test (D5) fails on an OEM platform because the driver 
       detects for link change even in loopback mode. This caused the
       PHY access collision between the driver and the test script. The
       fix is to have the test script wait for link to be stable.
    6. Added "-a" and "-s" options to "nvm dump" command, allowing the 
       dumped image to be specific to either Atmel or ST flash, 
       respectively (CQ#TO22151).
    7. Fixed the -ump option in "nvm upgrade" command that fails to
       program the image.
    8. Added "-slave" command line option to turn a device to a "slave"
       mode that can only echo packets and cannot be a device under 
       test (Linux only).
    9. Fixed the length field in VPD-R descriptor being off by one
       (CQ#22172).
   10. Added explicit error messages when encountering various failures 
       in manufacturing mode.
   11. Initialize the NVRAM size information into the NVRAM at a fixed 
       location whenever there is a "nvm cfg" update.
   12. Add image version checking of new version and version in NVRAM when
       doing "nvm upgrade". If new version if same or older than NVRAM 
       version, upgrade will be aborted.
   13. Add -F option to force image upgrade without version checking when
       doing "nvm upgrade".

version 1.1.8 (November 07, 2005)
    1. Fixed garbage characters going into log file when running "nvm
       dump" command (CQ#TO00001941).
    2. Fixed an ATMEL flash size determination algorithm that failed
       to find the size on certain parts. It was comparing other "don't
       care" bits, which can vary in value, and that caused the xdiag to 
       assume the size being 0 on those parts (CQ#TO00002041).
    3. Support an additional license file format that contains multiple
       consecutive licenses; this is useful in keeping the number of 
       files small on the manufacturing.
    4. Added support to program license keys in manufacturing mode.
    5. Added license key check in manufacturing mode and return an 
       appropriate error level (CQ#TO00001981).
    6. Fixed a PHY loopback test failure on serdes receiving jumbo 
       frames.

version 1.1.7 (October 14, 2005)
    1. Fixed the TPATC test (C04) when UMP firmware is enabled. The
       UMP firmware corrupted the buffer in the Tx buffer, causing
       the failure. The fix is to disable MCP processor 
       (CQ#TO000001797). Similar fixes are made for VPD (C09) test 
       (CQ#TO00001949), FIO register (C05) test, and statistics (D05)
       test.
    2. Eliminated "cpu ptrace" command as it is no longer used.
    3. Added more FTQs to display in "ftq dump".
    4. Added license key check (license chkkey) programmed by the 
       hardware key.
    5. Added "hmem map" command to map physical memory or register
       addressing space to a user space memory (needed for Linux).
    6. Eliminated the SMBus Enable choice in "nvm cfg". This option
       is not needed, as it should always be enabled.
    7. Added the NVRAM size determination algorithm to find out the
       NVRAM size, the size may not be correct if "-noinit" switch
       is provided when invoking xdiag.
    8. Report iSCSI boot as a choice of MBA agents in the device
       summary.
    9. Added -b06eng as an available switch in help display.
   10. Added Linux support into MSI (A05) and FIO event (C11) test 
       scripts by introducing the notion of user vs. kernel addresses.
   11. Broke down test cases into smaller subcases within the traffic
       tests (D01, D02, D03) to ensure each case does not use up all
       the Rx MBUFs. There is an Rx throttling issue on one system
       (CQ#TO00001786).
   12. Added jumbo frame testings in loopback tests (D01, D02, D03, 
       D06) and LSO test (D04).
   13. Support "-I 0" as infinition number of iterations.
   14. Support no-colon MAC address format in the arguments.

version 1.1.6 (September 01, 2005)
    1. Added error level (return code) upon exit (CQ#TO00001402).
    2. Allow the command "reg iread/iwrite/ishow" command when an
       arbitrary PCI device (device 99) is selected. This feature allows
       debugging of the 5706/5708 devices when they are not 
       recognized by xdiag.
    3. Dynamically update the IPMI configuration table (where it will
       reside in scratchpad) in the NVRAM based on the version of the 
       IPMI firmware being upgraded.
    4. NVM (C06) test can crash xdiag because the memory was invertently
       freed back to the memory pool twice. The fix ensures that memory
       block is freed only once.

version 1.1.5 (August 11, 2005)
    1. Truly fixed the failure to recognize 5708 devices (CQ#TO00001545).

version 1.1.4 (August 10, 2005)
    1. Fixed the failure to recognize 5708 on systems that have more
       than 32 PCI devices (CQ#TO00001545).
    2. Changed some of the command line switch names:
            - -fpxe to -fmba
            - -pxe to -mba
            - -asf to -mfw
    3. Corrected the "-noinit" (if specified) switch behavior to truly 
       not modifying the hardware when going into engineering mode.
    4. Defined a new variable $::toe(TOTAL_DEV) to present how many 
       devices available (including the virtual loopback one).
    5. Slow down the serial flash clock as the logic block may miss 
       timing in extreme conditions with extreme parts (CQ#TO00001565).
    6. Fixed the CRC check skip for BC1 image; it was checking for a 
       valid image based on the size (< 8kB). It is now changed to 16kB.
    7. Added LED application configuration in the "nvm cfg".
    8. Added iSCSI boot as a choice of MBA boot option in "nvm cfg" and
       display version string from the iSCSI boot image.
    9. Support new license key file and shared secret file format.

version 1.1.3 (July 26, 2005)
    1. Automatically update the CRCs for MKEY_INFO and UKEY_INFO blocks
       if the entire block is zero.
    2. Preserve MAC addresses in raw flash programming (e.g. "-fnvm"
       option) when starting address is zero (CQ#TO00001112).
    3. Fixed the log capability in SysOp mode to store more information.
    4. Updated resource allocation configuration in NVRAM as license key
       is stored.
    5. Added IMD echo mode, gigabit link in vaux mode (CQ#TO00001494)
       and default serdes link supports in "nvm cfg".
    6. Check to make sure that the primary MAC and iSCSI MAC addresses 
       only differ by the LSB and that the LSB is zero for primary MAC
       in "-m" is enabled. This eliminates the visual checking on the
       manufacturing floor.
    7. Fixed a "pci scan" problem that fails to display all the 
       available PCI/PCIE devices because xdiag kept track of 32 devices
       while some systems have more than that.
    8. Prevent user from executing some device specific commands (e.g.
       reg, cpu, etc.) when selecting a virtual (device 0) or an 
       arbitrary PCI (device 99) device (CQ#TO00000923).

version 1.1.2 (July 13, 2005)
    1. Added $::sys(NO_PUTS) to allow skipping output from "puts" 
       command. Also added $::sys(ARGS) to accept arbitration arguments
       that can be processed by any internal scripts, if needed.
    2. Minor cosmetic changes in the SysOp/Manuf mode test.
    3. Fixed a problem of failing to program additional boards without
       powering down the system for the SysOp/Manuf test. The register
       access failed while trying to initialize a new board with the
       existing PCI/PCI-E information, and the fix is to access 
       registers through indirect method during the initialization.
    4. Added an option to disable management firmware on reset command
       (only works with boot code v1.2.0 or after).
    5. Added mfw_override script to override the decision on which
       management firmware to load upon chip reset (works with boot code
       v1.2.0 or after) (CQ#TO00001252).
    6. Updated BIST test script with input from the LSI team.
    7. Fixed a bug in not handling hex values (A-F) from the MAC address
       properly before computing the hash value in the license.
    8. Added support for 5708B0 for the register test.
    9. Support sdata section of firmware images when programming to 
       NVRAM.
   10. Fixed an undefined variable bug on "blast -r -i 0 -u".

version 1.1.1 (June 21, 2005)
    1. Display MBA and WOL setting at the end of the SysOp/manuf tests.
    2. Added "-pnchk" and "-cfgchk" supports for manufacturing checks.
    3. Added "license" command to manipulate license keys.
    4. Updated diagnostic firmware to skip GPIO tests on LOM designs.
    5. Added ST Micro flash (1Mb) part support.
    6. Added "ipmi" command to configure and check configuration table.

version 1.1.0 (May 13, 2005)
    1. Enhanced "-fmac" option to detect writability of the MAC address
       file.
    2. Fixed a boot code upgrade bug where it does not update the
       bootstrap.
    3. Skip checking parity enable (up to the boot code) bits in the 
       memory tests.
    4. Keep track of the claimed interrupt (in additional to all counts)
       to work around interrupt test failures on systems that constantly
       assert interrupts (CQ#TO00001173).

version 1.0.9 (May 11, 2005)
    1. Added "-fmac" option to program MAC addresses from a file and 
       update the file.
    2. Fixed a statistics test failure by waiting for returning packets 
       to ensure no more traffic before checking statistic results 
       (CQ#TO00001200).
    3. Enhanced "nvm cfg" command to extract parameter through scripts.
    4. Added NVRAM configuration parameter support for CRS vs RXDV 
       source selection for UMP, applicable only for 5708 B0 and after.
    5. Defined config.txt for configuration the NVRAM configuration
       parameter (similar to eeprom.txt for legacy products).
    6. Added SMBus, UMP PHY timing mode, and a 5708 serdes configuration 
       (txctl3 register) into "nvm cfg" support.
    7. Added another entry to the OEM branding.
    8. Stall RV2P procs before issuing core reset to address a memory
       parity issue at the read ports of those memory blocks.
    9. Properly program firmware images based on the header information, 
       which has been ignored in the past. The bug can cause segments
       within the image to be shifted, resulting in firmware accessing 
       incorrect data during execution.

version 1.0.8 (March 29, 2005)
    1. Fixed a failure to recognize the 1Mb Atmel flash when the flash
       interface logic has already been reconfigured using an older
       version of the diag tool (CQ#TO00001206).
    2. Fixed an inadvertent update of MBA information while the flash
       may not have enough storage to hold the image.
    3. Fixed an FIO register test issue where an MSI cycle was 
       generated during the test, causing the subsequent register
       (which is the MSI status) to fail intermittently. The fix is to
       disable the MSI request by skip testing that particular 
       register (CQ#TO00001194).

version 1.0.7 (March 29, 2005)
    1. Added a hardware configuration parameter to support 2.5G design
       and another one for backplane application for 5708S.
    2. Fixed the external loopback to truly perform 2.5G link on fiber 
       designs that support that speed.
    3. Fixed LSO test (D04) failure after running external loopback test
       (D03). The LSO test, which is running in PHY internal loopback
       mode, started to send traffic without waiting for the link to 
       come up.
    4. Added "cpu grc" command to allow GRC access tests initiated by
       the firmware.
    5. Added "driver stat" to extract software statistics.
    6. Support Atmel 2Mb part for 5708 B0.
    7. Fixed the FIO register test failure due to some marginal timing 
       waiting for the boot code to complete all flash activities before
       the actual test.
    8. Fixed minor regression test issues supporting 5708 B0 FPGA.

version 1.0.6 (March 04, 2005)
    1. Fixed the intermittent LSO test failure in which the test script 
       times out before receiving all the returning packets 
       (CQ#TO00001116).
    2. Fixed the intermittent statistic test failure in which it did
       not get the latest statistics from the chip before comparing 
       results (CQ#TO00001118).
    3. Fixed an issue of programming beyond the first board through the 
       command line interface (CQ#TO00001112).
    4. Fixed LSO test (D04) failure after running external loopback test
       (D03). The LSO test, which is running in PHY internal loopback
       mode, started to send traffic without waiting for the link to come 
       up.

version 1.0.5 (March 03, 2005)
    1. Reduced test time on some test cases (D04 and D05) by eliminating
       unnecessary delays.
    2. Display PCI-E information for 5708 (CQ#TO00001037).
    3. Added the command line options -fump and -fipmi to program both 
       UMP and IPMI firmwares respectively; and also modified the 
       "nvm upgrade" command in the engineering mode to support the
       UMP and IPMI firmware programming.
    4. Fixed the problem with -mac/-iscsimac command line options. And 
       worked out the logic among options -m/-mac/-iscsimac/-pwd/-fnvm
       (CQ#TO00001108).
    5. Added a new diag command "ioport read/write" to access the host 
       I/O ports.
    6. Fixed the FIO event test failure on timer when cable is 
       connected; the link up event was interfering with other events
       (CQ#TO00001068).
    
version 1.0.4 (February 09, 2005)
    1. Fixed memory BIST test problem where the EPB was still in BIST
       mode after the test. The fix is to have EPB come out of BIST 
       mode at the end of the test (CQ#TO00000989).
    2. Fixed the NVM test (C06) failure when a system has multiple 
       boards that have different sizes of flash parts (CQ#TO00001003).
    3. Fixed the FIO event test, in which the BAR is temporarily 
       assigned to zero, causing the device to respond to video updates
       if video device is on the same bus. Fix is done by assigning a
       non-zero value on the high address of the BAR (CQ#TO00000996).

version 1.0.3 (February 03, 2005)
    1. Fixed the shared interrupt issue that crashes xdiag when running
       loopback tests (CQ#TO00000925). The fix is to skip invoking the
       ISR of other devices once the interrupt is claimed.
    2. Fixed a missing interrupt problem due to the interrupt acknow-
       ledgement being a post write. This creates a race condition of 
       PIC receives EOI before the device receives interrupt acknow-
       ledgement, resulting in an mis-fired interrupt being unclaimed,
       blocking all subsequent interrupts. The fix is to issue a 
       register read to flush out the interrupt acknowledgement.
    3. Updated and corrected the help display that has the available
       command line switches (CQ#TO00000975, CQ#TO00000978).
    4. Temporarily disable the memory BIST on the EPB (5708 only) as
       it has a problem restoring its functional state after BIST.

version 1.0.2 (January 28, 2005)
    1. Corrected the wording in show/hide MBA setup prompt in the 
       "nvm cfg" command (CQ#TO00000924).
    2. Fixed the PCI-X bus speed reporting when operating at 50MHz.
       The diagnostic needs to accommmodate the driver change in the
       bus speed reporting (CQ#TO00000933). 
    3. Removed context access via internal FIO test cases from the 
       diagfw test to fit the entire xdiag package in a single floppy
       (CQ#TO00000937).

version 1.0.1 (January 24, 2005)
    1. Fixed the FIO event test failure due to floating GPIO on some
       systems. Fixed by driving all GPIOs before starting the test
       (CQ#TO00000922).

version 1.0.0 (January 24, 2005)
    1. Display statistic block info on "blast -u" to give more meaning
       values.
    2. Fixed a "nvm cfg" bug with attribute value being a string
       containing spaces.
    3. Added "mii" support for 5708S.
    4. Added "-log" support even for engineering mode.
    5. Added MSI, BIST, FIO event, and link tests into the nictest.
    6. Fixed the overfill of NVM test content problem when VPD area is 
       blank (CQ#TO00000833).
    7. Enhanced diagfw test to include context access via internal FIO.
    8. Added a spare part number field into NVM as requested by an OEM
       (CQ#TO00000773).
    9. Enhanced the SysOp test interfaces: modifying some color display,
       stopping test on failure, and allowing customized test cases.
   10. Check and fix the interrupt being masked off problem more often. 
       This is an issue with the DOS extender itself. This frequent 
       check addresses an issue with characters lost from the COM port 
       when running DVT test automation.
   11. Mark HC block test disabled by default, as this is actually not
       a yield/manufacturing issue.
   12. Added a minor OEM branding when an OEM device is selected.
   13. Removed junk characters when logging (CQ#TO00000809, 
       CQ#TO00000810).
   14. Fixed the missing interrupt problem on Intel PDK platform 
       (CQ#TO00000795, CQ#TO00000896).
   15. Added link test for fiber devices, although it is disabled by
       default (CQ#TO00000692).
   16. Inherit a fix (from the driver) that works around the PCI-X 
       clock speed detection problem in the chip by checking on the 
       speed detected by the chip PLL (CQ#TO0000894).

version 0.9.2 (December 09, 2004)
    1. Fixed the marginal timing issue with accessing 5708S serdes.
    2. Added 5706 A2 register test support.

version 0.9.1 (December 08, 2004)
    1. Added support for 5708S (recognizing the new device ID).
    2. Added various speed support on the external loopback for 5708S 
       parts 
    3. Fixed "aspm" syntax error problem.
    4. Added the ability to report the test result as "N/A" on RPC
       test for 5706 A1.

version 0.9.0 (December 03, 2004)
    1. Added support to upgrade both phases of bootcode from a single
       file.
    2. Added HC block test into the nictest and sysop test suites.
    3. Enhance "pci search" command to look up a device by vendor ID,
       device ID, and/or PCI class type.
    4. Added "aspm" command to manipulate PCI-E ASPM (CQ#TO000000744).
    5. Added support for 5708C: 
          - new TPAT and diagnostic test firmwares
          - PCIE config access
          - "pci init" command enhancement
          - register and memory test enhancement
          - PCIE lane test
    6. Fixed the xdiag crashing problem due to shared interrupt with
       other devices (CQ#TO00000407).
    7. Fixed the MAC loopback failure due to this being an unsupported
       test case for FPGA (CQ#TO00000396).

version 0.8.9 (November 11, 2004)
    1. Added the dynamic storage allocation for the NVM, addressing the
       problem found in CQ#TO00000687.
    2. Corrected the configuration value for Saifun 512kbit part to fix
       the NVM test (CQ#TO00000689).
    3. Support ISCSI boot image in NVM upgrade.

version 0.8.8 (November 01, 2004)
    1. Added retries to check for interrupt completion in the interrupt 
       test for FPGA (CQ#TO00000492, CQ#TO00000506).
    2. Modified the device command code to timely update the information
       about all the devices in the system.
    3. Fixed an external loopback failure on fiber boards due to an 
       undefined variable in the test script.
    4. Added the RPC test into the regression suite as part of l2test; 
       meanwhile, put a simplified version of RPC test into the nictest.
       The A1 silicon is known to fail this test.
    5. Fixed a performance issue on blast by making the constant
       polling for user input to periodic polling.
    6. Added VPD-R support in "nvm cfg" and VPD test.
    7. Changed the nictest aborting to detect for only ESC character
       instead of any keystroke (CQ#TO00000621).
    8. Eliminated a memory leak problem that is found in the packet 
       object freeing routine (CQ#TO0000630).
    9. Worked around the first packet missing problem on fiber boards 
       by resetting the Rx MAC after "driver load" when running internal
       PHY loopback tests (CQ#TO00000585).

version 0.8.7 (August 31, 2004)
    1. The driver includes a delay after issuing core reset to the chip,
       allowing bootcode to configure the PLL to lock. This problem 
       manifests itself in some driver related tests (CQ#TO00000483,
       CQ#TO00000486, CQ#TO00000489).

version 0.8.6 (August 27, 2004)
    1. Fixed the display of incorrect content from NVM (CQ#TO00000423).
    2. Updated the help usage on enabling/disabling WOL (CQ#TO00000421).
    3. Consolidate ASF and IMD firmware enable configuration into a
       single bit.
    4. Added interrupt test into nictest.
    5. Fixed the copper external loopback at 1000M to pass traffic at
       its true speed.
    6. Support incremental and address patterns in "nvm fill".
    7. Fixed the MBA version string display (CQ#TO00000446).
    8. Optimized the implementation of nictest and engineering-mode 
       tests by sharing the core code.
    9. Added sysop support into the batch-mode tests, which includes 
       programming the board, executing a special set of sysop tests, 
       and then allowing the hot-swapping for testing another board. 
       This special set of sysop tests is composed of memory/data tests 
       from nictest and a new nvm test.
    10.Added NVM integrity check on the manufacturing and upgrade key 
       blocks.

version 0.8.5 (July 27, 2004)
    1. Fixed the incorrect report of 5706S part as 5802S A1 
       (CQ#TO00000404).
    2. Added a hardware config bit to set UMP to use RMII instead of
       MII (5708 only).
    3. Added register test support for TOE core of the 5708 FPGA.

version 0.8.4 (July 19, 2004)
    1. Remote.tcl file is added under /runtime/stdscrpt/5706/ path.
        This file supports diag commands for remote 5706.
    2. Support 5708 on emulation.
    3. Fixed the crashing of "blast -h" after reloading the driver by
       always keeping one packet in loopback mode to flush the Tx path
       at the end.
    4. Fixed the "blast -h" updates.
    5. Added random patterns in DMA tests.
    6. Keep track of Rx packets dropped by the firmware in qstat.
    7. Enable bus master to the chip as some old BIOS implementations
       do not. Without this, cputest (C1) hangs (CQ#TO00000343).
    8. The engineering build is now stand alone, not depending on
       any external directory structure for files (e.g. firmware). This
       has no impact on the normal release build.
    9. Reduced the amount of polling in RBUF allocation test on FPGA 
       and emulation.
    10.Added hardware configuration on allowing the chip to draw over
       375mA of Vaux current. [Disclaimer: Adding this configuration
       allows user to create conflicting hardware settings. Care must 
       be taken when changing them.]
    11.Added CRC check in the directory block of the NVM. [Note: Users 
       may observe a bogus warning about NVM corrupted or CRC not match
       when using this version on the existing boards. To eliminate the
       bogus warning, type "nvm crc -fix directory" in engineering 
       mode or upgrade bc2 or mba image.]
    12.Fixed a problem on writing to NVM in engineering build, no impact
       on the normal release build.
    13.Add register test coverage for 5706 A1.
    14.Fixed the bug in "reboot" due to an undefined environment 
       variable.
    15.Fixed the FIO register test hung due to the MCP test firmware 
       change (CQ#TO00000379). The test script was looking for trace 
       buffer at a fixed location, and the fix is to add the dynamic
       search for the trace buffer.
    16.Added PHY loopback test.
    17.Turn off MAC loopback test when testing FPGA due to some 
       limitation on the FPGA build.

version 0.8.3 (April 23, 2004)
    1. Support Saifun flash parts.
    2. Changed the way the batch mode testing is executed; now for each 
       iteration the test loops through all the chips on the system
       (#CQ266).
    3. Added the "phy_type" into "toe" associated array.
    4. Built a special case for external loopback test for fiber board 
       in both batch and engineering modes.

version 0.8.2 (April 15, 2004)
    1. Support fiber boards.
    2. Fixed the reset routine on detecting a correct signature.
    3. Small cosmetic changes in qstat for hardware people.
    4. Turn on transmit coalescing, set chip in promiscuous mode, and
       force status/statistic block updates in blast.
    5. Warn user to reboot after changing the BAR size in "nvm cfg".
    6. In engineering mode, exit right away if no DVT is found on the
       system.
    7. modified the dma command implementation to comply with the dma 
       testing firmware change.
       
version 0.8.1 (April 09, 2004)
    1. Reset all boards when exiting.
    2. Reset the board after saving NVM configuration information
       (CQ#TO00000187).
    3. Added back the comma as the separator in the configuration
       display (CQ#TO00000198).
    4. Perform CRC checks against NVM when exiting.
    5. Implemented delete key at the command line interface in
       engineering mode.
    6. Skip some special registers in the regtest (CQ#TO201).
    7. Modified the cputest and nvmtest firmwares and scripts, and
       make these two tests share one single firmware.
    8. Changed the nvm basic test to only test limited number of 
       dwords on the NVM, and also modified the contention test's
       firmware to use the block write, which is to avoid severely
       shortening the life span of the NVM part.
    9. Changed the nictest and batch mode to limit the number of 
       invocation of nvm test to 2.
    10.Implemented the "nvm prg -mem offset hmem size" to do nvm 
       block-write by taking inputs from host memory.
    11.Cleared out the screen after launching the xdiag.
   

version 0.8.0 (April 2, 2004)
    1. Allow "dma" command to test customed patterns. This requires
       an update in the firmware (dma.h), which is included in the
       release.
    2. Added the "-legacy" option to the xdiag, which will turn on
       the capability of recognizing the legacy 570X boards. Now by
       default only 5706 boards are supported.
    3. Skip some special registers in the EMAC and MISC blocks in 
       A1 register test, which are either clock register, or debug 
       register, or register requiring special write/read methods. In 
       some cases, one register is said to be read-only; however, its
       value does dynamically change. So when 0/1 is wriiten to the
       register, it might be read back as something new not because the
       recent write takes effect, but because the value has changed 
       internally. (CQ#TO189).

version 0.7.9 (March 31, 2004)
    1. Fixed C7 test to minimize "CPU stuck" false alarms 
       (CQ#TO00000106).
    2. Fixed the immediate crashing of xdiag on a particular system.
       It turns out to be that xdiag starts rv2p processors without 
       loading any codes, the bogus codes on the processors happen
       to create a bogus DMA (CQ#TO00000160).
    3. Added the option "-log" to both batch mode and nictest.
    4. Modified the nictest option "-i" to "-I", just being consistent
       with batch mode option.
    5. Fixed the D4 test by doing the following: a, modify the "hmem raed"
       to bypass the cache; b, modify the script to disable the periodic
       statistic block update. (CQ#TO180)
    6. Changed the memory test to halt the mcp before running the test 
       (CQ#TO176) and to reset the chip afterwards (CQ#TO184).
    7. Inside the reset06 proc to wait for ther bootcode to update the 
       shared memory region after the core-reset.

version 0.7.8 (March 26, 2004)
    1. Fixed the "nvm upgrade" where xdiag crashes or reports strange
       errors on the second upgrade (CQ#TO00000151).
    2. Changed MBA hot key default to Ctrl-S.
    3. Eliminated the misleading "nvm cfg" default presentation when the 
       NVM is blank.
    4. Added "qstat" and improved "tb" display for DVT.
    5. Realigned device information display (CQ#TO00000149).
    6. Display MBA enable setting in device information line 
       (CQ#TO00000152).
    7. Added VLAN tag configuration in "nvm cfg" 
    8. Display version for MBA image in "nvm dir" (CQ#TO00000161).
    9. Fixed the TPAT Cracker test bug that is due to caching bad value
       (CQ#TO00000130).
    10. Modified the "device" cmd to make it display the latest device
        information.
    11. Added the batch mode "-ver" option. (CQ#TO122).
    12. Modified the "D2" test in the nictest suite to run at 
        10/100/1000MbPs separatly.
    13. Fixed the way the failure cause is fetched inside the nictest suite.
        So now the actual failure message string is displayed instead of
        "expected integer but instead got" + faliure message.

version 0.7.7 (March 23, 2004)
    1. Fixed the FIO register test failure due to the lack of context 
       memory workaround for A0 silicon (CQ#TO00000129).
    2. Fixed the core reset test failure (CQ#TO00000106). The test 
       script originally sampled the change of CPU program counter too
       fast.
    3. Provided support for optional parameters, baudrate and settings 
       to "serialport open" command.   
    4. Added the "title bar" for the device information output (
       CQ#TO00000121).
    5. Modified not to show the disabled tests (CQ#TO0000123).
    6. Fixed a problem inside the tpat cracker test script to allocate 
       memory but never free them.
    7. Added new options "-m -fnvm" to allow the Sysops group to quickly
       program the boards by scanning the bar code and specifying the 
       binary NVM image.
    8. Added a proc inside the "init" to skip the faulty ctx memory 
       and ctx page table entrys.
    9. "nvm prg" command implementation is modified to achieve 
       better performance in Flash programming. 
   10. Allow programming of an MBA image of size up to 79kB.
   11. Fixed the inability to stop "blast -h" from a redirected COM 
       port.

version 0.7.6 (March 15, 2004)
    1. Fixed the lock-up in the RBUF allocation test (C02). See 
       CQ#TO00000095.
    2. Checked both return code and returned result while calling
       Tcl_Eval from both nictest and batch mode.
    3. Changed the presentation of $env(BCM5706_DIR) to have "." as 
       suffix in the case of using the root to avoid "double slash"
       situation inside the script, which is not a problem when typing
       interactively.
    4. Diag driver made the fix to change the DMA configuration to 
       eliminate the 2 cycles of delay for DMA completion.

version 0.7.5 (March 10, 2004)
    1. Added registry entries (drv06_xx associative array) for number of
       DMA read/write channels.
    2. New NVM mapping definition is introduced, the NVM command has 
       been modified to support this. At the same time, the new mapping
       breaks the compatibility of the NVM commands from previous 
       versions.
    3. Updated the bootcode version on banner display (CQ: TO0098, 
       TO0104).
    4. Modified the device information into a one-line format. 
    5. Added the PCI/PCI-X bus PErr/SErr masking for the A0 chip into
       the driver and diag init routine.
    6. Modified the TDMA config register inside driver and diag init 
       routine to make sure one TDMA request at a time.
    7. Changed the nvm.tcl testing to avoid modifying the magic value
       of the bootcode during the testing, which can potentially cause
       test to fail.
    8. Made the change to show the test failure in red.
    9. Fixed the problem reporting the wrong PCI-X clock speed.

version 0.7.4 (March 04, 2004)
    1. Moved MBA (formerly known as PXE) configuration parameter as a
       standalone image, separate from manufacturing info block in the
       NVM map.
    2. Fixed the init command in case of any bus/device/function numbers
       of the device are greater than nine.
    3. Modified the batch mode and "nictest" command to take the option
       "-cof", which is going to allow the tests to continue after failure.
       The default mode now is to stop the tests right after the first
       failure.
    4. Modified DMA test to release memory after the tests.
    5. Fixed a problem in the batch mode help printing routine, which 
       corrupted the memory and caused the pmode exception error.
    6. By default enabled all the regress tests except the phy external 
       loopback in both nictest and batch-mode testing.

version 0.7.3 (February 25, 2004)
    1. Made the "nictest" command more flexibile and easier to use, by 
       adding the options such as "-t", "-T" and "-i".
    2. Implemented a new command "pciinit" at script level. It is 
       primarily utilized during the screening process to do socket-board
       hot-swapping.
    3. Added "-rc" as one of the xdiag batch mode options to source a 
       user specified tcl script after the board is initialized and right
       before the command prompt shows up.
    4. Modified the "nictest" command and batch-mode test execution to 
       print out status-bar alike for any test running a little bit longer.
    5. Re-organized the on-chip memory test into 18 different sub-modules,
       each of which is to specifically test one piece of chip memory.

version 0.7.2 (February 17, 2004)
    1. Packaged all the chip-screening tests into one command "screen".
    2. Embedded the 5706.rdf used by the regtest into the customer 
       build.
    3. Modified the "device" command to show all the devices in the 
       system.
    4. Changed the tclsh.rc to configure the DMA in such a way that the
       race condition is avoided.
    5. Added the command line options such as "-t -T -c -I -asf -pxe -wol"
       to the xdiag.

version 0.7.1 (February 3, 2004)
    1. Added DMA stress test into the regression suite.
    2. Updated the NVM mapping; this obsoletes any NVM configuration
       made from previous versions.
    3. Released only the engineering version for A0 bring-up.
    4. Renamed the executable name to "xdiag.exe".

version 0.7.0 (January 23, 2004)
    1. Added the "help" command.
    2, Added the "nictest" command.
    3, Disabled all the print messages coming out of the scripts and 
       commands in the customer build when the diagnostics is launched.
    4, Added the "batch mode" and "engineering mode" for the customer 
       build.
    5, Fixed several scripts in order to make them work nicely in the
       customer build. 


version 0.6.1 (December 8, 2003)
    1. Fixed the skipping of CR (0x0D) when reading binary files by
       forcing all file open with binary mode enabled to allow Tcl to
       perform any CRLF filtering when needed.
    2. Allow Tx coalescing on blast command.
    3. Added "driver submit" to submit L4/L5 work queue, along with a
       new command "ofld".
    4. Fixed l2pkt to correctly generate 0x00/0xff as payload pattern 
       when requested.
    5. Fixed an l2pkt bug where it misinterpretes a spec update of 
       "rarp" as "arp".
    6. Changed logging to append mode.
    7. Fixed a bug where "hmem alloc" sometimes does not initialize
       the memory content (when allocated address is originally only
       32-bit aligned).
    8. Support new features from the flash interface, via nvm command.
    9. Added subcommands dir, crc, cfg, upgrade, prg, & dump for "nvm".
   10. Changed chip reset to go through config space.
   11. Fixed L2spec object to allow attribute "pktLenMode" to accept
       "increment:x".



version 0.6.0 (July 24, 2003)
    1. Changed the default receive mask to receive broadcast and unicast
       frames.  Previously, it was set to promiscuous mode.
    2. um_get_mailboxq_base now takes cid_addr as argument instead of cid.
       um_l5ref_path_neigh now returns cid_addr instead of cid.
    3. Minimize PCI target access so we can achieve wire rate on receive 
       when running blast by modifying the followings.
       1. Modified the driver to not acknowledge status block update when 
          the diag is polling the driver to service interrupts.
       2. Batch queueing of the receive buffers.
    4. Mask out unused bits in L2 frame header when checking errors since
       they are actually used internally.
    5. Extend GPIO to 8 bits for 5706 and allow them to be set as input
       (e.g. gpio write 0 z).
    6. Fix gpio set/clear bug in the driver.
    7. Remove kernel bypass workaround where the kernel mailbox queue is 
       written instead of the bypass mailbox queue.
    8. Fixed "l2pkt generate" where it failed to generate IP and TCP
       option fields if the option size is specified as a multiple of 4.
    9. The driver maps the first 32 VCIDs when it is loaded. This is 
       required for the latest IKOS and FPGA builds.
   10. Fixed a bug in l2test.tcl where "l2pkt post" is used and packet
       objects are freed and recycled before driver completes the 
       delivery.
   11. Checksums: fixed a bug in calculating incorrect pseudo-checksum 
       on padded runt packets and fix a bug where odd number of bytes of
       data can produce incorrect checksum.
   12. Dynamically determine the build type (e.g. ASIC, IKOS, vs FPGA).
   13. Updated an init procedure to map the first 32 VCIDs and 
       eliminated the "ctx init" call.
   14. Linearize the packet length parameter so that the lengths of 
       generated packets (from l2pkt command) are consistent whether they
       are greater or less than the minimum Ethernet pkt length.
   15. Added FPGA support in initialization procedures.
   16. Small cleanup in loop, txloop, & rxloop and added reloop procedures.


Version 0.5.1 (May 02, 2003)
-------------------------

   Fixes:
   ========
   None

   Enhancements:
   =============
   1. Request: (CQ N/A)
               There may be a need to distinguish the chip build 
               platform, whether it is on IKOS emulation, FPGA, or an
               actual ASIC. This allows scripts to be written custom
               to the chip build.
      Change:
               Added an '-fpga' as the binary switch, along with a new
               associative array element $::toe(CHIP_BUILD) that has 
               one of the values: "ASIC", "IKOS", and "FPGA". The other
               value $::sys(IKOS) is phasing out.
      Impact:
               None at this stage. Script writers can leverage this 
               associative array value to customize their scripts. Any
               scripts (probably none at this time) that use 
               $::sys(IKOS) will halt with an error.

   2. Request: (CQ N/A)
               A new script is needed to address the RV2P block.
      Change:
               A new Tcl script, rv2p.tcl is added.
      Impact:
               Increase the support in checking out RV2P block.

   3. Request: (CQ N/A)
               Development partner needs an ability to automatically 
               load in one script at the start in the custom build.
      Change:
               An command switch is added.
      Impact:
               The named script will be automatically sourced. A badly
               written script may cause the chip or diagnostic engine to
               be in an unstable state.

   4. Request: (CQ N/A)
               Testing LSO requires MSS field to be filled. L2pkt 
               command current does not have such a facility.
      Change:
               A new command "l2pkt lso" is added to set a packet to be
               sent as multiple packets.
      Impact:
               There is no method to revert the setting of LSO on an 
               l2pkt object. 

   5. Request: (CQ N/A)
               The current driver does not allow user to control the 
               receive MAC mode register (Rx Mask) directly. There is a 
               need to dynamically manipulate it for receiving bad 
               frames.
      Change:
               A new command "driver rxmask" is added to allow such a
               manipulation. The user needs to look the bitmap setting
               from the lm_defs.h file, a similar approach in Windows
               registry. 
      Impact:
               Careless setup using this command can cause the chip to
               misbehave on frame filtering.


Version 0.5.0 (April 16, 2003)
-------------------------

   Fixes:
   ========
   None

   Enhancements:
   =============
   1. Request: (CQ N/A)
               The emulation builds based on RG11 has been relatively 
               stable, and there is no more need to support any builds 
               based on any previous register specifications.
      Change:
               This version of diagnostic supports RG11 only, in terms
               of register definition, driver, and scripts.
      Impact:
               Running this version of diagnostic on old emulation
               builds will not operate the chip properly.

   2. Request: (CQ N/A)
               To test WOL functionality, a Tcl command for generating
               certain types of packets (interesting and magic) is
               needed.
      Change:
               A new Tcl command "wol" is introduced.
      Impact:
               This is command is used in conjunction with "l2pkt 
               modify" to construct the desired packet content.

   3. Request: (CQ N/A)
               To test WOL functionality, a method to modify packet
               content is necessary.
      Change:
               A new Tcl command "l2pkt modify" is introduced.
      Impact:
               This command requires a parameter type that "wol" 
               command produces. It is suggested to use "wol" along
               with this command to construct interesting and magic
               packets to test WOL.

   4. Request: (CQ N/A)
               The current "hmem write" is too slow to fill up memory
               with a specific pattern.
      Change:
               A new Tcl command "hmem fill" is introduced to speed up
               the operation.
      Impact:
               It is the user's responsibility not to overfill the 
               memory, corrupting content of other areas. The command
               does not check for overfill at all.

   5. Request: (CQ N/A)
               The script download is taking a bit long when scripts
               are long. 
      Change:
               The serial port speed is changed to 115200.
      Impact:
               This may have an impact on losing data in the serial
               link, although it has not been observed when using with
               Equinox 10/100 Serial Hub.


version 0.4.7 (03/05/03)
    1. Included customer build that embeds scripts into the binary.
    2. Added scratchpad register offsets for MCP and CP.
    3. Added test firmware loading support in cputest.tcl.
    4. Made "l2spec" and "l2pkt" command more user-friendly.
    5. Added 8-bit and 16-bit read/write access in "hmem" command.
    6. Added L5 commands, still require lower layer support.
    7. Added "mcast" for multicast table manipulation for layer 2.

version 0.4.6 (01/30/03)
    1. Added "l2pkt crcchk" to check layer two packet integrity.
    2. A fix in reg_spec.tcl script on a problem with the reg_write 
       command going to array registers.
    3. Added console echo after "serialport redirect".
    4. Added the ability to separate IO and watch/stat info to two
       different serial ports.
    5. Added a mode switching between interactive and batch, useful
       to skip pagination, etc.
    6. Added "xfer send" command for uploading files via serial port.
    7. Allow different l2spec objects to track their own SN when
       generating packets.
    8. Ensure "hmem alloc" returns a 64-bit aligned address.

version 0.4.5 (12/12/02)
    1. Fixed crashing on "reg show" when start address is not 32-byte
       align.
    2. Removed word swap workaround on frame header.
    3. Automatically source ftq_spec.tcl and reg_spec.tcl.
    4. Skip CRC/checksum in "l2pkt check" when payload is random; 
       accomodate H/W VLAN insert when checking CRC in "l2pkt check".
    5. Added some scripts: rxloop, txloop, loop, misc_reg, rlup_tst,
       and l2test.

version 0.4.4 (12/03/02)
    1. Fixed serial port input to allow doskey and cursor movement.
    2. Better pagination interface.
    3. Make $toe() and $sys() truly global.
    4. Updated the BD page size configuration (Tx & Rx) in driver.

version 0.4.3 (11/21/02)
    1. Added "xfer" command for downloading scripts via zmodem 
       protocol.
    2. Fixed a bug in "stats del" and "watch del", where they fail
       not re-register their yield callback functions.
    3. Added reg_spec.tcl and ftq_spec.tcl scripts.
    4. Switch 5701 driver polarity and force to MII mode when change
       request medium type to NONE.

version 0.4.2 (10/29/02)
    1. Script updates: RV2P page size, TBDR, new context definition.
    2. Fixed bugs on CRC and VLAN checks.
    3. Fixed mismatches in TXP FIO space and rxpf_rv2ppq_rxp_flags.
    4. Always check flags set by driver in layer 2 checker.
    5. Corrected error message display in MAC header check.
    6. Corrected the frame header definition (word-swap).

version 0.4.1 (10/22/02)
    1. Adjusted register definition.

version 0.4.0 (10/18/02)
    1. Use a new set of register definition. Requires emulation 
       database built after 10/18/02.
    2. Added RV2P BD page configuration in driver.
    3. Updated test scripts to leverage register names rather than
       hard coded offset.

version 0.3.2 (10/16/02)
    1. Added "dma read" command.
    2. Fixed various bugs in L2 packet generator and checker.
    3. Fixed l2pkt bugs (e.g. referencing stale buffer, missing some
       packet bookkeeping, etc.)
    4. Added "l2pkt length".
    5. Added some enhancement on l2tx.tcl script (e.g. allows crossing
       BD page boundary, loading of latest firmware).
    6. Fixed some bugs in l2spec update.
    7. Include CRC when duplicating packet buffer.
    8. Added layer 4 support in the driver.

version 0.3.1 (09/30/02)
    1. Implemented "dma write" command.
    2. Implemented "keyhit" command to check for user input, used 
       for scripts.
    3. Added a programmable vlan_id for driver initialization, used
       only for temporary debugging, will be removed in later rev.

version 0.3.0 (09/24/02)
    1. Enhanced error messages in "l2spec update".
    2. Allow conversion from a Tcl string object to an L2pkt object.
    3. Fixed background watch displaying garbage bug.
    4. Added "pci search" command.
    5. Added "driver poll" and "driver intr" commands.
    6. Added "l2pkt post" and "l2pkt loop" commands.
    7. Minor modifications to get the driver running in emulation
       environment.
    8. Driver did not set tx flags in bd.
    9. Fixed a bug where frag count not properly initialized.
   10. Added ioctl codes for getting/setting driver configurations.
   11. Increased the number of tx/rx packet descriptors to 4000.
   12. Added "version run" subcommand to allow invoking different
       versions of diagnostic.

version 0.2.32 (08/23/02)
    1. Added "l2spec update" to simplify modification of L2Spec object.
    2. Fixed "pci scan" to accommodate the broken bridge.

version 0.2.31 (08/21/02)
    1. Output more information from "l2pkt dump".
    2. Added background yield(); can be turned on/off through 
       $sys(BG_YIELD).
    3. Added new scratchpad traces.
    4. Fixed an output bug when the buffer has exactly 80 characters
       (e.g. error message from "watch" and "stats").

version 0.2.30 (08/16/02)
    1. Free memory allocated by "hmem alloc" when program exits.
    2. Support name identifier for each memory block allocated by 
       "hmem alloc".
    3. Included init and fini functions for all TOE diagnostic commands.
    4. Added "hex32" and "hex16" commands.
    5. Added logging feature ("log" command).
    6. Enhanced "l2pkt split" to include explicit fragment sizes.

version 0.2.29 (08/05/02)
    1. Fixed the CPU register access problem due to extra padding 
       in tbdc_reg_t structure.

Version 0.2.28 (08/02/02)
    1. Added CLI editing.
    2. Added byte display and "next block display" in "sram" command.

Version 0.2.27 (07/25/02)
    1. Added $offset06 associative array to reference 5706 register
       offset.
    2. Added function key and left/right arrow inputs.
    3. Reflected the new register specification.

Version 0.2.26 (07/18/02)
    1. Added FTQ command facility.

Version 0.2.25 (07/18/02)
    1. Added DOS styled arrow up/down user entry history keys.

Version 0.2.24 (07/16/02)
    1. Added workaround for concurrent access to CPU scratchpads.
    2. Added explicit direct method for register access, allowing
       "reg read/write/disp" to support linear mapping.
    3. Added scripts to test memory window register (0x400) and
       central enable system (0x80c-0x814).

Version 0.2.23 (07/06/02)
    1. Added MIPS disassembler.
    2. Added support of CPU test firmware.
    3. Added firmware trace dump.

Version 0.2.22 (07/03/02)
    1. Fixed loading of firmware into CPUs.
    2. Fixed CPU scratchpad accesses.
    3. Added DMA test stubs.
    4. Added command switches (-bb and -ikos).
    5. Added workaround to access pci register via "reg" command.

Version 0.2.21 (07/02/02)
    1. Fixed prompt to show proper device after running some init script.
    2. Extended hmem to include memory alloc/free.
    3. Fixed cpu register file access problem.
    4. Assume 4-byte access as default in pcicfg command.

Version 0.2.20 (06/28/02)
    1. Changed program name to toediag.
    2. Added online help on a few more commands.
    3. Added byte-oriented display on host memory.
    4. Added delay (ms & us) command for script use.
    5. Added modification capability to "hmem" command.
    6. Added 5706 support in cpu command.

Version 0.2.19 (06/21/02)
    1. Fixed two bugs in output routine.
    2. Enhanced memory test script.

Version 0.2.18 (06/18/02)
    1. Included b5706 driver codes.

Version 0.2.17 (06/16/02)
    1. Added memory access for individual CPUs.
    2. Added support for handling various driver states.

Version 0.2.16 (06/13/02)
    1. Added PHY register access.
    2. Added a display engine to display 32-bit and 8-bit values.
    3. Changed "hmem" to display by 32-bit values using display engine.

Version 0.2.13 (06/12/02)
    1. Added MIPS debugging facilities.

Version 0.2.12 (06/11/02)
    1. Added online help infrastructure via "what", see "reg" command for
       example.
    2. Use $toe(IKOS) to determine IKOS emulation.

Version 0.2.11 (06/06/02)
    1. Added "driver" command to control the driver state.
    2. Added "hmem" command to examine host memory.

Version 0.2.10 (05/31/02)
    1. Added "cpu" command to select different cpu in the chip.
    2. Included "l2pkt split" to split packet buffer into fragments.
    
Version 0.2.0 (04/19/02)
    1. Added Tcl script debugging facilities.
    2. Added register access through indirect method (via PCI config).
    3. Added register (direct and indirect) and memory test scripts.
    4. Added serial port redirect commands.
    5. Added "what" command to display status of different modules.

Version 0.1.1 (01/14/02)
    1. Added memory and eeprom access to 5701 driver.
    2. Implemented most of the environment variable setup.

Version 0.1.0 (01/03/02)
    1. Fixed interrupt handler "stack overflow" issue by removing compiler 
       stack checking code.

Version 0.0 (01/02/02)
    1. Ported Tcl to DOS environment.
    2. Incorporated 5701 driver.
    3. Added register and memory access commands.

